#include "../head/server.h"

// 处理客户端发送的各种指令
int handle(int netfd, char *username, MYSQL *mysql)
{
	while (1)
	{
		// 接收cmd和path
		train_t train;
		bzero(&train, sizeof(train));
		recv(netfd, &train.length, sizeof(train.length), MSG_WAITALL);
		if (train.length == 0)
		{
			printf("用户%s退出登录！\n", username);
			close(netfd);
			break;
		}
		recv(netfd, &train.data, train.length, MSG_WAITALL);
		char cmd[60] = {0};
		memcpy(cmd, train.data, train.length);
		printf("来自客户端的指令cmd：%s\n", cmd);

		// 判断命令
		if (!strcmp(cmd, "cd"))
		{ // 切换目录
			// 调用cd处理函数
			cd_work(netfd, username, mysql);
		}
		else if (!strcmp(cmd, "ls"))
		{ // 显示当前目录下所有文件的名字
			// 调用ls处理函数
			ls_work(netfd, username, mysql);
		}
		else if (!strcmp(cmd, "remove"))
		{ // 删除指定文件
			// 调用remove处理函数
			remove_work(netfd, username, mysql);
		}
		else if (!strcmp(cmd, "pwd"))
		{ // 显示当前路径
			// 调用pwd处理函数
			pwd_work(netfd, username, mysql);
		}
		else if (!strcmp(cmd, "gets"))
		{ // 发送用户需要下载的文件
			// 调用gets处理函数
			gets_work(netfd, username, mysql);
		}
		else if (!strcmp(cmd, "puts"))
		{ // 接受用户上传的文件
			// 调用puts处理函数
			puts_work(netfd, username, mysql); // puts.c
		}
	}
	return 0;
}